package com.ykq.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ykq.entity.Staff;
import com.ykq.mapper.StaffMapper;
import com.ykq.service.StaffService;
import com.ykq.vo.LoginVO;
import com.ykq.vo.R;
import com.ykq.vo.StaffVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @Author: 闫克起
 * @Description:
 * @Date: Create in 9:49 2024/10/21
 */
@Service
public class StaffServiceImpl implements StaffService {
    @Autowired
    private StaffMapper staffMapper;
    @Autowired
    private HttpSession session;

    @Override
    public R selectByNameAndPwd(LoginVO loginVO) {
        if (StringUtils.isEmpty(loginVO.getUsername())) {//判断账号是否为空。
            return R.error("账号不能为空");
        }
        if (StringUtils.isEmpty(loginVO.getPassword())) {//判断密码是否为空。
            return R.error("密码不能为空");
        }
        //查询账号密码是否正确
        Staff staff = staffMapper.findByNameAndPwd(loginVO.getUsername(), loginVO.getPassword());
        if (staff == null) {
            return R.error("账号或密码错误");
        }
        //判断账号是否被停用
        if (staff.getState().equals(0)) {
            return R.error("账号已停用,请联系管理员....");
        }
        //把当前用户保存到session会话吧。
        session.setAttribute("staff", staff);
        //返回成功
        return R.ok();
    }

    @Override
    public R selectByCondition(Integer current, Integer pageSize, StaffVo staffVo) {
        PageHelper.startPage(current, pageSize);
        Staff staff1 = (Staff) session.getAttribute("staff");//获取当前登录用户
        if (!staff1.getBranchid().equals(12138)) { //如果不是总店店长
            staffVo.setBranchId(staff1.getBranchid());
        }
        List<Staff> staff = staffMapper.selectByCondition(staffVo);
        PageInfo<Staff> pageInfo = new PageInfo<>(staff);
        return R.ok(pageInfo);
    }

    @Override
    public R checkStaffid(Integer staffid) {
        Staff staff = staffMapper.selectByStaffid(staffid);
        if(staff!=null){
            return R.error("该工号已存在,请重新输入");
        }
        return R.ok();
    }

    @Override
    public R add(Staff staff) {
        staff.setState(1);
        int i = staffMapper.insertSelective(staff);
        if (i > 0){
            return R.ok();
        }else{
            return R.error("添加失败");
        }
    }
}

//service业务层: 在controller和dao之间的一层。











